Machine learning and artificial intelligence are quickly becoming the main technology that drives new capabilities in speech recognition, computer vision, object recognition and autonomous driving. The core of this technology, is an artificial neural network that either needs to be trained or be used post-training.
During training and post-training the neural network is continually receiving inputs, making calculations, taking actions, and thus processing data. Thus, neural network accelerators are being created that utilize techniques and hardware to increase processing speeds. These techniques include using a set number of cycles to finish calculations to minimize processing actions. Such techniques are flawed because the accelerators function in the same manner for all layers of a neural network, typically attempting to compress and arrange layers in a more efficient manner. However, each of the layers within a neural network is different. Consequently, while an accelerator may be optimal for some layers of a neural network, major inefficiencies happen when attempting to manipulate other layers of the same network. This results in slower processing times and unneeded power usage.